package cn.edu.ctgu;

/**.
 * 该类是一个工具类，用于计算电话账单费用。
 */
public final class PhoneBillFeeCalculator {
    // 使用枚举实现单例模式
    public static final PhoneBillFeeCalculator INSTANCE = new PhoneBillFeeCalculator();

    // 隐藏公共构造器，防止实例化工具类
    private PhoneBillFeeCalculator() {
    }

    /**.
     * 获取 PhoneBillFeeCalculator 类的单例实例。
     *
     * @return PhoneBillFeeCalculator 类的实例
     */
    public static PhoneBillFeeCalculator getInstance() {
        return INSTANCE;
    }
    // 定义常量来避免魔术数字
    private static final long FIRST_RATE_MINUTES = 20;
    private static final double FIRST_RATE = 0.05;
    private static final double SECOND_RATE = 0.10;
    private static final double FIRST_RATE_TOTAL = 1.00;

    /**.
     * 计算电话账单费用。
     *
     * @param minutes 通话时长（分钟）
     * @return 电话账单费用
     */
    public static double calculateBill(long minutes) {
        if (minutes <= FIRST_RATE_MINUTES) {
            return minutes * FIRST_RATE;
        } else {
            return FIRST_RATE_TOTAL + (minutes - FIRST_RATE_MINUTES) * SECOND_RATE;
        }
    }
}